return function (filename, table)
  local name,_ = filename:match("(.+)%.(.+)")

  local conf = {}
  if file.exists(name .. '.lc') then
    conf = dofile(name .. '.lc')
    if not conf then conf = {} end
  end

  dofile('help/cover.lc')(conf, table)

  local text = dofile('help/tostr.lc')(conf)
  conf = nil
  collectgarbage()

  dofile('help/save.lc')(name .. '.lua', 'return ' .. text)
  text = nil
  collectgarbage()

  if file.exists(name .. '.lua') then
    node.compile(name .. '.lua')
    file.remove(name .. '.lua')
  end

  name = nil
  collectgarbage()
end